import request from '@/utils/request'

//获取质量方案列表
export function getQcTemplateDetail(queryParams) {
  return request({
          url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateList',
          method: 'post',
          data: queryParams
   })
}

//验证质量方案名称唯一
export function checkTemplateNameUnique(template_name) {
  return request({
    url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateNameUnique',
    method: 'post',
    params: { template_name },
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  })
}
//检测项关联修改与新增
export function saveOrUpdateTemplateIndex(data) {
  const url = data.record_id ? '/ldzl-qc/qc/qcTemplate/updateQcTemplateIndex' : '/ldzl-qc/qc/qcTemplate/insertQcTemplateIndex'
  return request({
    url,
    method: 'post',
    data : data
  })
}
//获取检测项关联列表
export function getTestItemList(params) {
    return request({
        url: '/ldzl-qc/qc/qcIndex/selectQcIndexList',
        method: 'post',
        params: params
    })
}
//删除检测项关联方法
export function deleteQcTemplateIndex(ids) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/deleteQcTemplateIndex',
          method: 'post',
          data: ids
   });
}
//验证物料产品关联名字是否唯一
export function selectQcTemplateProductNameUnique(material_name, template_id) {
    // 确保template_id是有效的数字字符串，避免后端解析错误
    // 如果template_id为空，使用默认值'0'，避免发送空字符串
    const template_id_str = template_id ? String(template_id) : '0';
    
    console.log('API调用参数:', { material_name, template_id_original: template_id, template_id_str });
    
    return request({
          url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateProductNameUnique',
          method: 'post',
          data: { 
            material_name: material_name,
            template_id: template_id_str 
          },
          headers: {
            // 禁用防重复提交检查
            repeatSubmit: false,
            // 设置超时时间更长，避免网络波动
            timeout: 15000
          }
    }).then(response => {
        // 明确记录API响应数据，帮助调试
        console.log('selectQcTemplateProductNameUnique API响应:', response);
        
        // 处理响应数据
        if (response === true || response === "true" || (response && response.data === true)) {
            return true; // 名称唯一，可以使用
        } else if (response === false || response === "false" || (response && response.data === false)) {
            return false; // 名称不唯一，已存在
        } else if (response && response.code === 200) {
            // 某些情况下后端返回成功码但没有明确布尔值，视为成功
            return true;
        } else {
            // 其他情况当作唯一处理，让表单提交，由后端最终判断
            console.warn('无法确定唯一性检查结果，默认为唯一:', response);
            return true;
        }
    }).catch(error => {
        // 记录详细错误
        console.error('唯一性检查API错误:', error);
        
        // 如果是重复提交错误，忽略它并视为成功
        if (error && error.message && error.message.includes('重复提交')) {
            console.warn('忽略重复提交错误，视为唯一');
            return true;
        }
        
        // 其他错误重新抛出
        throw error;
   });
}
//新增物料产品关联
export function insertTemplateDetail(data) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/insertQcTemplateProduct',
          method: 'post',
          data: data,
          headers: {
            // 禁用防重复提交检查
            repeatSubmit: false
          }
    }).then(response => {
        // 记录原始响应以便调试
        console.log('insertTemplateDetail原始响应:', response);
        
        // 尝试处理各种可能的响应格式
        if (response === true || response === "true") {
            // 如果直接返回true，构造一个标准响应
            return { code: 200, data: data.record_id || Date.now() };
        } else if (response && typeof response === 'object') {
            // 对象格式响应
            return response;
        } else if (response === false || response === "false" || !response) {
            // 失败响应，抛出错误
            throw new Error('操作失败，服务器返回失败状态');
        } else {
            // 其他情况，尝试构造有效响应
            return { 
                code: 200, 
                data: typeof response === 'string' || typeof response === 'number' ? response : data.record_id || Date.now() 
            };
        }
   });
}
//修改物料产品关联
export function updateTemplateDetail(data) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/updateQcTemplateProduct',
          method: 'post',
          data: data,
          headers: {
            // 禁用防重复提交检查
            repeatSubmit: false
          }
    }).then(response => {
        // 记录原始响应以便调试
        console.log('updateTemplateDetail原始响应:', response);
        
        // 尝试处理各种可能的响应格式
        if (response === true || response === "true") {
            // 如果直接返回true，构造一个标准响应
            return { code: 200, data: data.record_id || true };
        } else if (response && typeof response === 'object') {
            // 对象格式响应
            return response;
        } else if (response === false || response === "false" || !response) {
            // 失败响应，抛出错误
            throw new Error('操作失败，服务器返回失败状态');
        } else {
            // 其他情况，尝试构造有效响应
            return { 
                code: 200, 
                data: typeof response === 'string' || typeof response === 'number' ? response : data.record_id || true
            };
        }
   });
}
//逻辑删除物料产品关联
export function deleteTemplateDetail(ids) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/deleteQcTemplateProduct',
          method: 'post',
          data: ids
   });
}
//新增物料产品关联
export function insertQcTemplate(data) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/insertQcTemplate',
          method: 'post',
          data: data
   });
}
//修改物料产品关联
export function updateQcTemplate(data) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/updateQcTemplate',
          method: 'post',
          data: data
   });
}
//逻辑删除物料产品关联
export function deleteQcTemplate(ids) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/deleteQcTemplate',
          method: 'post',
          data: ids
   });
}

//获取检测项关联列表
export function selectQcTemplateIndexList(templateId, params = {}) {
    return request({
          url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateIndexList',
          method: 'post',
          data: {
            template_id: templateId,
            ...params
          }
   });
}
//获取质量方案物料产品关联列表
export function selectQcTemplateProductList(id) {
    return request({
          url: `/ldzl-qc/qc/qcTemplate/selectQcTemplateProductList?template_id=${id}`,
          method: 'post'
   });
}

//查询物料列表
export function fetchMaterialList(data) {
  // 分离搜索参数和分页参数
  const requestData = {
    // 创建BasicWlgl对象结构
    material_code: data.keyword || '',  // 如果有keyword，用作物料编码搜索条件
    material_name: data.keyword || '',  // 如果有keyword，也用作物料名称搜索条件
  };
  
  // 分页参数放入URL参数中
  const queryParams = {
    pageNum: data.pageNum || 1,
    pageSize: data.pageSize || 10
  };
  
  console.log('fetchMaterialList API调用，请求体:', requestData, '查询参数:', queryParams);
  return request({
    url: '/ldzl-qc/qc/qcTemplate/wlgl/list',
    method: 'post',
    data: requestData,
    params: queryParams, // 添加URL查询参数
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  }).then(response => {
    console.log('fetchMaterialList API响应:', response);
    return response;
  }).catch(error => {
    console.error('fetchMaterialList API错误:', error);
    throw error;
  });
}

//查询产品列表
export function fetchProductList(data) {
  // 分离搜索参数和分页参数
  const requestData = {
    // 创建BasicProduct对象结构
    product_name: data.keyword || '',  // 如果有keyword，用作产品名称搜索条件
    product_code: data.keyword || '',  // 如果有keyword，也用作产品编码搜索条件
  };
  
  // 分页参数放入URL参数中
  const queryParams = {
    pageNum: data.pageNum || 1,
    pageSize: data.pageSize || 10
  };
  
  console.log('fetchProductList API调用，请求体:', requestData, '查询参数:', queryParams);
  return request({
    url: '/ldzl-qc/qc/qcTemplate/pro/list',
    method: 'post',
    data: requestData,
    params: queryParams, // 添加URL查询参数
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  }).then(response => {
    console.log('fetchProductList API响应:', response);
    return response;
  }).catch(error => {
    // 如果是重复提交错误，完全跳过错误处理
    if (error.message && error.message.includes('重复提交')) {
      console.warn('忽略重复提交错误，继续处理');
      // 返回一个空结果以避免进一步错误
      return { rows: [], total: 0 };
    }
    console.error('fetchProductList API错误:', error);
    throw error;
  });
}

//根据物料编码对应检测方案
export function selectQcTemplateProductMaterialCode(goodsCode) {
  console.log('根据物料编码查询检测方案，物料编码:', goodsCode);
  return request({
    url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateProductMaterialCode',
    method: 'post',
    params: { material_code: goodsCode }, // 使用params而不是data，匹配@RequestParam
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  }).then(response => {
    console.log('物料编码查询检测方案API响应:', response);
    return response;
  }).catch(error => {
    console.error('物料编码查询检测方案API错误:', error);
    throw error;
  })
}
//根据产品idid对应检测方案
export function selectQcTemplateProductProductCode(goodsId) {
  return request({
    url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateProductProductCode',
    method: 'post',
    params: { product_id: goodsId }, // 使用params而不是data，匹配@RequestParam
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  })
}
//根据产品编码对应检测方案
export function selectQcTemplateProductCode(goodsCode) {
  return request({
    url: '/ldzl-qc/qc/qcTemplate/selectQcTemplateProductCode',
    method: 'post',
    params: { product_code: goodsCode }, // 使用params而不是data，匹配@RequestParam
    headers: {
      // 禁用防重复提交检查
      repeatSubmit: false
    }
  })
}